//package org.example.Thread;
//
//import org.example.persistence.model.DataSourceConfig;
//
//
//import java.sql.SQLException;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.concurrent.ExecutorService;
//import java.util.concurrent.Executors;
//import java.util.concurrent.TimeUnit;
//import java.util.stream.IntStream;
//
//public class MultiThreadMultiDataSourceExample1 {
//    public static void main(String[] args) {
//        // 1. 创建数据源配置列表
//        List<DataSourceConfig> dataSourceConfigs = createDataSourceConfigs();
//
//        // 2. 使用线程池创建多线程连接多个数据源
//        ExecutorService executor = Executors.newFixedThreadPool(dataSourceConfigs.size());
//
//        for (DataSourceConfig config : dataSourceConfigs) {
//            executor.execute(() -> {
//                // 3. 连接数据库，并执行操作
//                ClickHouseConnection connection = connectToDataSource(config);
//                executeOperations(connection);
//                closeConnection(connection);
//            });
//        }
//
//        // 4. 等待所有线程执行完成
//        executor.shutdown();
//        try {
//            executor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        }
//
//        System.out.println("所有线程执行完成");
//    }
//
//    private static List<DataSourceConfig> createDataSourceConfigs() {
//        List<DataSourceConfig> dataSourceConfigs = new ArrayList<>();
//
//        // 添加数据源配置信息
//        dataSourceConfigs.add(new DataSourceConfig("jdbc:clickhouse://localhost:8123/default", "default", ""));
//
//        return dataSourceConfigs;
//    }
//
//    private static ClickHouseConnection connectToDataSource(DataSourceConfig config) {
//        ClickHouseConnection connection = null;
//
//        try {
//            // 创建ClickHouse数据源
//            ClickHouseProperties properties = new ClickHouseProperties();
//            BalancedClickhouseDataSource dataSource = new BalancedClickhouseDataSource(config.getUrl(), properties);
//
//            // 连接到ClickHouse数据库
//            connection = dataSource.getConnection();
//            System.out.println("连接到数据库：" + config.getUrl());
//        } catch (SQLException e) {
//            e.printStackTrace();
//        }
//
//        return connection;
//    }
//
//    private static void executeOperations(ClickHouseConnection connection) {
//        try {
//            // 准备插入操作
//            String sql = "INSERT INTO my_table (column1, column2) VALUES (?, ?)";
//            ClickHousePreparedStatement statement = (ClickHousePreparedStatement) connection.prepareStatement(sql);
//
//            // 生成数据并执行插入操作
//            IntStream.rangeClosed(1, 100).forEach(i -> {
//                try {
//                    // 设置参数
//                    statement.setInt(1, i);
//                    statement.setString(2, "value " + i);
//
//                    // 执行插入操作
//                    statement.executeUpdate();
//                } catch (SQLException e) {
//                    e.printStackTrace();
//                }
//            });
//
//            System.out.println("插入完成");
//            statement.close();
//        } catch (SQLException e) {
//            e.printStackTrace();
//        }
//    }
//
//    private static void closeConnection(ClickHouseConnection connection) {
//        try {
//            if (connection != null) {
//                connection.close();
//                System.out.println("关闭数据库连接");
//            }
//        } catch (SQLException e) {
//            e.printStackTrace();
//        }
//    }
//}